Skip to content

Conversation

@matthewwalsh0
Copy link
Member

@matthewwalsh0 matthewwalsh0 commented Jan 6, 2026

Explanation

Support Relay quotes using the entire payment token balance, by using the EXACT_INPUT trade type, rather than the standard EXPECTED_OUTPUT.

Enabled via the new setIsMaxAmount public method and messenger action.

References

Related to #6498

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Introduces a “max amount” mode to Transaction Pay and plumbs target amounts through quotes and totals.

  • BREAKING (types): Add isMaxAmount to TransactionData and QuoteRequest; add targetAmount to TransactionPayQuote and TransactionPayTotals; new TransactionPayController:setIsMaxAmount action
  • Controller: new setIsMaxAmount method; quote/source-amount recomputation triggers when toggled; exports updated
  • Relay strategy: when isMaxAmount use EXACT_INPUT with sourceTokenAmount; forbid included transactions; skip delegation if no data; normalized quotes now include targetAmount
  • Bridge strategy: normalized quotes include targetAmount
  • Totals: when isMaxAmount, total uses summed targetAmount; syncTransaction populates metamaskPay.targetFiat
  • Core types: add optional targetFiat to MetamaskPayMetadata
  • Tests updated accordingly

Written by Cursor Bugbot for commit 26359d3. This will update automatically on new commits. Configure here.

@matthewwalsh0 matthewwalsh0 changed the title feat(transaction-pay-controller): support max payment token amount feat(transaction-pay-controller): max quotes Jan 6, 2026
@matthewwalsh0 matthewwalsh0 marked this pull request as ready for review January 6, 2026 19:56
@matthewwalsh0 matthewwalsh0 requested review from a team as code owners January 6, 2026 19:56
@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

github-actions bot commented Jan 6, 2026

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/accounts-controller": "35.0.0-preview-4f3e9ca7",
  "@metamask-previews/address-book-controller": "7.0.1-preview-4f3e9ca7",
  "@metamask-previews/analytics-controller": "1.0.0-preview-4f3e9ca7",
  "@metamask-previews/announcement-controller": "8.0.0-preview-4f3e9ca7",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/approval-controller": "8.0.0-preview-4f3e9ca7",
  "@metamask-previews/assets-controllers": "94.1.0-preview-4f3e9ca7",
  "@metamask-previews/base-controller": "9.0.0-preview-4f3e9ca7",
  "@metamask-previews/bridge-controller": "64.2.0-preview-4f3e9ca7",
  "@metamask-previews/bridge-status-controller": "64.2.0-preview-4f3e9ca7",
  "@metamask-previews/build-utils": "3.0.4-preview-4f3e9ca7",
  "@metamask-previews/chain-agnostic-permission": "1.3.0-preview-4f3e9ca7",
  "@metamask-previews/claims-controller": "0.3.1-preview-4f3e9ca7",
  "@metamask-previews/composable-controller": "12.0.0-preview-4f3e9ca7",
  "@metamask-previews/controller-utils": "11.17.0-preview-4f3e9ca7",
  "@metamask-previews/core-backend": "5.0.0-preview-4f3e9ca7",
  "@metamask-previews/delegation-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/earn-controller": "11.0.0-preview-4f3e9ca7",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-4f3e9ca7",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-4f3e9ca7",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-4f3e9ca7",
  "@metamask-previews/ens-controller": "19.0.0-preview-4f3e9ca7",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-4f3e9ca7",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-4f3e9ca7",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-4f3e9ca7",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-4f3e9ca7",
  "@metamask-previews/foundryup": "1.0.1-preview-4f3e9ca7",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-4f3e9ca7",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-4f3e9ca7",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-4f3e9ca7",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-4f3e9ca7",
  "@metamask-previews/keyring-controller": "25.0.0-preview-4f3e9ca7",
  "@metamask-previews/logging-controller": "7.0.1-preview-4f3e9ca7",
  "@metamask-previews/message-manager": "14.1.0-preview-4f3e9ca7",
  "@metamask-previews/messenger": "0.3.0-preview-4f3e9ca7",
  "@metamask-previews/multichain-account-service": "4.1.0-preview-4f3e9ca7",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-4f3e9ca7",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-4f3e9ca7",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-4f3e9ca7",
  "@metamask-previews/name-controller": "9.0.0-preview-4f3e9ca7",
  "@metamask-previews/network-controller": "27.1.0-preview-4f3e9ca7",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-4f3e9ca7",
  "@metamask-previews/permission-controller": "12.1.1-preview-4f3e9ca7",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-4f3e9ca7",
  "@metamask-previews/phishing-controller": "16.1.0-preview-4f3e9ca7",
  "@metamask-previews/polling-controller": "16.0.0-preview-4f3e9ca7",
  "@metamask-previews/preferences-controller": "22.0.0-preview-4f3e9ca7",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-4f3e9ca7",
  "@metamask-previews/ramps-controller": "2.0.0-preview-4f3e9ca7",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-4f3e9ca7",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/sample-controllers": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-4f3e9ca7",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-4f3e9ca7",
  "@metamask-previews/shield-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/signature-controller": "38.0.0-preview-4f3e9ca7",
  "@metamask-previews/storage-service": "0.0.1-preview-4f3e9ca7",
  "@metamask-previews/subscription-controller": "5.4.0-preview-4f3e9ca7",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-4f3e9ca7",
  "@metamask-previews/transaction-controller": "62.7.0-preview-4f3e9ca7",
  "@metamask-previews/transaction-pay-controller": "10.5.0-preview-4f3e9ca7",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-4f3e9ca7"
}

@matthewwalsh0
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/accounts-controller": "35.0.0-preview-9462ebb8",
  "@metamask-previews/address-book-controller": "7.0.1-preview-9462ebb8",
  "@metamask-previews/analytics-controller": "1.0.0-preview-9462ebb8",
  "@metamask-previews/announcement-controller": "8.0.0-preview-9462ebb8",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/approval-controller": "8.0.0-preview-9462ebb8",
  "@metamask-previews/assets-controllers": "94.1.0-preview-9462ebb8",
  "@metamask-previews/base-controller": "9.0.0-preview-9462ebb8",
  "@metamask-previews/bridge-controller": "64.2.0-preview-9462ebb8",
  "@metamask-previews/bridge-status-controller": "64.2.0-preview-9462ebb8",
  "@metamask-previews/build-utils": "3.0.4-preview-9462ebb8",
  "@metamask-previews/chain-agnostic-permission": "1.3.0-preview-9462ebb8",
  "@metamask-previews/claims-controller": "0.3.1-preview-9462ebb8",
  "@metamask-previews/composable-controller": "12.0.0-preview-9462ebb8",
  "@metamask-previews/controller-utils": "11.17.0-preview-9462ebb8",
  "@metamask-previews/core-backend": "5.0.0-preview-9462ebb8",
  "@metamask-previews/delegation-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/earn-controller": "11.0.0-preview-9462ebb8",
  "@metamask-previews/eip-5792-middleware": "2.1.0-preview-9462ebb8",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-9462ebb8",
  "@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-9462ebb8",
  "@metamask-previews/ens-controller": "19.0.0-preview-9462ebb8",
  "@metamask-previews/error-reporting-service": "3.0.1-preview-9462ebb8",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-9462ebb8",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-9462ebb8",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-9462ebb8",
  "@metamask-previews/foundryup": "1.0.1-preview-9462ebb8",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-9462ebb8",
  "@metamask-previews/gator-permissions-controller": "0.8.0-preview-9462ebb8",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-9462ebb8",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-9462ebb8",
  "@metamask-previews/keyring-controller": "25.0.0-preview-9462ebb8",
  "@metamask-previews/logging-controller": "7.0.1-preview-9462ebb8",
  "@metamask-previews/message-manager": "14.1.0-preview-9462ebb8",
  "@metamask-previews/messenger": "0.3.0-preview-9462ebb8",
  "@metamask-previews/multichain-account-service": "4.1.0-preview-9462ebb8",
  "@metamask-previews/multichain-api-middleware": "1.2.5-preview-9462ebb8",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-9462ebb8",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-9462ebb8",
  "@metamask-previews/name-controller": "9.0.0-preview-9462ebb8",
  "@metamask-previews/network-controller": "27.1.0-preview-9462ebb8",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-9462ebb8",
  "@metamask-previews/permission-controller": "12.1.1-preview-9462ebb8",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-9462ebb8",
  "@metamask-previews/phishing-controller": "16.1.0-preview-9462ebb8",
  "@metamask-previews/polling-controller": "16.0.0-preview-9462ebb8",
  "@metamask-previews/preferences-controller": "22.0.0-preview-9462ebb8",
  "@metamask-previews/profile-metrics-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-9462ebb8",
  "@metamask-previews/ramps-controller": "2.0.0-preview-9462ebb8",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-9462ebb8",
  "@metamask-previews/remote-feature-flag-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/sample-controllers": "4.0.0-preview-9462ebb8",
  "@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-9462ebb8",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-9462ebb8",
  "@metamask-previews/shield-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/signature-controller": "38.0.0-preview-9462ebb8",
  "@metamask-previews/storage-service": "0.0.1-preview-9462ebb8",
  "@metamask-previews/subscription-controller": "5.4.0-preview-9462ebb8",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-9462ebb8",
  "@metamask-previews/transaction-controller": "62.7.0-preview-9462ebb8",
  "@metamask-previews/transaction-pay-controller": "10.5.0-preview-9462ebb8",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-9462ebb8"
}

@matthewwalsh0 matthewwalsh0 added this pull request to the merge queue Jan 9, 2026
Merged via the queue into main with commit 8ceaba8 Jan 9, 2026
286 checks passed
@matthewwalsh0 matthewwalsh0 deleted the feat/pay-controller-max branch January 9, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants